import axios from 'axios'
import { useTokenStore } from './token';
import useCounter from '../stores/pinia';
import router from '@/router/router'
import { ElMessage } from 'element-plus'
const baseURL = '/api';
const instance = axios.create({ baseURL })

// https://blog.csdn.net/heihaozi/article/details/131428958

// 添加请求拦截器
instance.interceptors.request.use(
  (config)=> {
    // 在发送请求之前做些什么
    // 添加token
    const tokenStore=useTokenStore()
    //判断有没有token
    if(tokenStore.token){
      config.headers.Authorization=tokenStore.token//不能传中文
    }
    return config;
  }, 
  (error)=> {
    // 对请求错误做些什么
    console.log("请求错误回调")
    return Promise.reject(error);
  });
/////////////////////////////////////////////////////////////////////////////////////////
// 添加响应拦截器
instance.interceptors.response.use(
    // 2xx 范围内的状态码都会触发该函数。
  result=> {
    // 对响应数据做点什么
    // console.log("响应拦截result",result)
    // if(result.data.code==200){
      return result
    // }
    // return Promise.reject(result.data)
  }, 
  // 超出 2xx 范围的状态码都会触发该函数。
  error=> {
    // 对响应错误做点什么
    // const tokenStore=useTokenStore()
    const counterStore=useCounter()
    console.log("响应拦截error",error)
    if(error.response.status==401){
      ElMessage.error('登录已过期，请重新登录!')
      router.push('/')
      const tokenStore=useTokenStore()
      counterStore.jwt=""
      counterStore.index="crud"
      counterStore.userId=null
      tokenStore.removeToken()
    }else{
        ElMessage.error('服务异常')
    }
    // ElMessage.error(result.data.msg?result.data.msg:'服务异常')
    return Promise.reject(error);//异步的状态转化成失败的状态
  });



export default instance
//定制请求的实例

// //导入axios  npm install axios
// import axios from 'axios';
// // 定义一个变量,记录公共的前缀  ,  baseURL
// // const baseURL = 'http://8.134.66.229:8080';
// const baseURL = '/api';
// const instance = axios.create({ baseURL })
// export default instance;
